package day1208_3;
class  Shop  implements  Runnable{
    int stock=1;//库存         //排除库存减为-1的方式： 可以给减库存的方法添加一个锁synchronized
    synchronized void subStock(){//2.执行减库存方法
        if(stock==0){//2.1.如果库存量不为0就继续往下运行(库存为0就结束减库存方法的执行)
            System.out.println("没有库存了");
            return; //如果库存为0就结束减库存方法subStock的执行
        }
        Thread.yield();//2.2.本句代码可以不写
        // (添加的作用是让出现负数的机会变多，如果某线程进入方法，可以通过yield暂停到这里，让另一个线程运行)
        stock--;//2.2.加入线程1暂停到本行， 线程2继续运行(执行run执行subStock,将库存减为0结束)
        System.out.println(stock);//2.3.线程2运行完，线程1从11行继续运行(将库存从0减为-1)
    }
    public void run() {//1.线程启动会通过start调用run方法
        subStock();//run方法会调用减库存的方法，让库存量减1
    }
}


public class T2 {
    public static void main(String[] args) {
        Shop   s=new Shop();

        Thread  zs=new Thread(s);
        zs.start();

        Thread  lisi=new Thread(s);
        lisi.start();
    }
}






